package com.bajiao.service.store;

import com.bajiao.entity.store.StoreUser;
import com.bajiao.vo.store.StoreUserInfo;
import com.bajiao.vo.store.StoreUserResponse;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @Description: 商家账号
 * @Author: FanJq
 * @Date:   2024-12-24
 * @Version: V1.0
 */
public interface StoreUserService extends IService<StoreUser> {

    /**
     * @Description
     * 根据账号获取
     * @date 2024/12/26 9:55
     * @author FanJq
     * @param account
     * @return {@link StoreUser}
    */
    StoreUser getByAccount(String account);

    /**
     * @Description
     * 获取用户详细信息
     * @date 2024/12/26 10:07
     * @author FanJq
     * @param user
     * @return {@link StoreUserInfo}
    */
    StoreUserInfo getUserInfo(StoreUser user);

    /**
     * @Description
     * 修改密码
     * @date 2024/12/26 10:36
     * @author FanJq
     * @param user
     * @param cipher
     * @return
    */
    void modifyCipher(StoreUser user, String cipher);

    /**
     * @Description
     * 验证权限
     * @date 2024/12/26 11:55
     * @author FanJq
     * @param permissions
     * @param permission
     * @return {@link Boolean}
    */
    Boolean verifyPermission(String permissions, String permission);

    /**
     * @Description
     * 获取店铺子账号列表
     * @date 2024/12/28 14:20
     * @author FanJq
     * @param storeId
     * @return {@link List< StoreUserResponse>}
    */
    List<StoreUserResponse> getStoreUserList(String storeId);

    /**
     * @Description
     * 创建店铺用户
     * @date 2024/12/28 14:27
     * @author FanJq
     * @param account
     * @param password
     * @param type
     * @return
    */
    void create(String storeId, String account, String password, Integer type);

    /**
     * @Description
     * 修改账号权限
     * @date 2024/12/28 14:53
     * @author FanJq
     * @param storeId
     * @param permissions
     * @return
    */
    void modifyPermission(String storeId, String id, String permissions);

    /**
     * @Description
     * 管理后台列表
     * @date 2025/1/6 14:21
     * @author FanJq
     * @param storeId
     * @param keywords
     * @param account
     * @return {@link List< StoreUser>}
    */
    List<StoreUser> getAdminList(String storeId, String keywords, String account);
}
